#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include "messageshowarea.h"
#include "messageeditarea.h"


class MainWidget : public QWidget
{
    Q_OBJECT
private:
    static MainWidget* instance;
    // 对于单例模式来说，最关键的部分，不是创建实例，而是限制别人创建实例
    MainWidget(QWidget *parent = nullptr);
public:
    static MainWidget* getInstance();
    ~MainWidget();

private:
    QWidget* windowLeft;
    QWidget* windowMid;
    QWidget* windowRight;

    // 用户头像
    QPushButton* userAvatar;
    // 会话标签页按钮
    QPushButton* sessionTable;
    // 好友标签页按钮
    QPushButton* friendTable;
    // 好友申请标签页
    QPushButton* applyTable;

    // 用户搜索框
    QLineEdit* searchEdit;
    // 添加好友按钮
    QPushButton* addFriendBtn;
    // 消息展示区
    MessageShowArea* messageShowArea;
    // 消息编辑区
    MessageEditArea* messageEditArea;

    // 激活哪个标签页 点击左侧框框中，进入哪个标签页
    enum ActiveTab
    {
        SESSION_LIST,
        FRIEND_LIST,
        APPLY_LIST
    };
    ActiveTab activeTab = SESSION_LIST;

    // 初始化主窗口的样式布局
    void InitMainWindow();
    // 初始化左侧窗口的样式布局
    void InitLeftWindow();
    // 初始化中间窗口的样式布局
    void InitMidWindow();
    // 初始化右侧窗口的样式布局
    void InitRightWindow();

    // 初始化信号槽
    void InitSignalSlot();

    // 加载会话表
    void loadSesstionList();
    // 加载朋友列表
    void loadFriendList();
    // 加载申请列表
    void loadApplyList();

    //声明槽函数
    void switchTabToSession();
    void switchTabToFriend();
    void switchTabToApply();

};
#endif // MAINWIDGET_H
